let msgString = "hello";
console.log("===================================================");
console.log("【msgString】", msgString);
console.log("===================================================");

console.log("\n===================================================");
console.log("=====================【sm2】=======================");
console.log("===================================================");
const sm2 = require("sm-crypto").sm2;
let keypair = sm2.generateKeyPairHex();
// 随机生成的公钥
// publicKey = keypair.publicKey
// 对应的私钥
// privateKey = keypair.privateKey
let publicKey = `04f3bea8adf0f943089ab5c15c192a7362f0af896d0d787ae3b6adddc196d06e76f940a0ffa478a3abc2aa4044251022b20b78df540f3e450b16d534775c6fdfbe`;
let privateKey = `af1e8788c51fa416d62dbfd3410aba04135bbdf16d9a9eb21462d08ccb5c43f9`;
console.log("【publicKey】", publicKey);
console.log("【privateKey】", privateKey);
const cipherMode = 0; // 1 - C1C3C2，0 - C1C2C3，默认为1

// 加密
let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode); // 加密结果
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode); // 解密结果
console.log("【encryptData】", encryptData);
console.log("【decryptData】", decryptData);
// 签名
let sigValueHex2 = sm2.doSignature(msgString, privateKey); // 签名
let verifyResult2 = sm2.doVerifySignature(msgString, sigValueHex2, publicKey); // 验签结果
console.log("【sigValueHex2】", sigValueHex2);
console.log("【verifyResult2】", verifyResult2);
console.log("===================================================");

console.log("\n===================================================");
console.log("=====================【sm3】=======================");
console.log("===================================================");
const sm3 = require("sm-crypto").sm3;
let hashData = sm3(msgString); // 杂凑hashData
console.log("【hashData】", hashData);
console.log("===================================================");

console.log("\n===================================================");
console.log("=====================【sm4】=======================");
console.log("===================================================");
let sm4 = require("sm-crypto").sm4;
msgString = "hello world!"; // 可以为 utf8 串或字节数组
let key = "0123456789abcdeffedcba9876543210"; // 可以为 16 进制串或字节数组，要求为 128 比特

encryptData = sm4.encrypt(msgString, key); // 加密，默认输出 16 进制字符串，默认使用 pkcs#5 填充
decryptData = sm4.decrypt(encryptData, key); // 解密，默认输出 utf8 字符串，默认使用 pkcs#5 填充
console.log("【encryptData】", encryptData);
console.log("【decryptData】", decryptData);
console.log("===================================================");
